%pip install rasterio
%pip install geopandas
%pip install folium
%pip install matplotlib
%pip install numpy
%pip install geopy
%pip install pykrige
Requirement already satisfied: rasterio in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (1.4.3) Requirement already satisfied: affine in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (2.4.0) Requirement already satisfied: attrs in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (23.1.0) Requirement already satisfied: certifi in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (2023.7.22) Requirement already satisfied: click>=4.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (8.1.7) Requirement already satisfied: cligj>=0.5 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (0.7.2) Requirement already satisfied: numpy>=1.24 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (1.26.2) Requirement already satisfied: click-plugins in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (1.1.1) Requirement already satisfied: pyparsing in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from rasterio) (3.1.1) Requirement already satisfied: colorama in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from click>=4.0->rasterio) (0.4.6) Note: you may need to restart the kernel to use updated packages.
[notice] A new release of pip is available: 23.2.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip
Requirement already satisfied: geopandas in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (1.0.1) Requirement already satisfied: numpy>=1.22 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from geopandas) (1.26.2) Requirement already satisfied: pyogrio>=0.7.2 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from geopandas) (0.10.0) Requirement already satisfied: packaging in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from geopandas) (23.2) Requirement already satisfied: pandas>=1.4.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from geopandas) (2.2.2) Requirement already satisfied: pyproj>=3.3.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from geopandas) (3.7.1) Requirement already satisfied: shapely>=2.0.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from geopandas) (2.0.7) Requirement already satisfied: python-dateutil>=2.8.2 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from pandas>=1.4.0->geopandas) (2.8.2) Requirement already satisfied: pytz>=2020.1 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from pandas>=1.4.0->geopandas) (2024.1) Requirement already satisfied: tzdata>=2022.7 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from pandas>=1.4.0->geopandas) (2023.3) Requirement already satisfied: certifi in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from pyogrio>=0.7.2->geopandas) (2023.7.22) Requirement already satisfied: six>=1.5 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from python-dateutil>=2.8.2->pandas>=1.4.0->geopandas) (1.16.0) Note: you may need to restart the kernel to use updated packages.
[notice] A new release of pip is available: 23.2.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip
Requirement already satisfied: folium in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (0.19.5) Requirement already satisfied: branca>=0.6.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from folium) (0.8.1) Requirement already satisfied: jinja2>=2.9 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from folium) (3.1.6) Requirement already satisfied: numpy in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from folium) (1.26.2) Requirement already satisfied: requests in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from folium) (2.31.0) Requirement already satisfied: xyzservices in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from folium) (2025.1.0) Requirement already satisfied: MarkupSafe>=2.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from jinja2>=2.9->folium) (3.0.2) Requirement already satisfied: charset-normalizer<4,>=2 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from requests->folium) (3.3.2) Requirement already satisfied: idna<4,>=2.5 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from requests->folium) (3.4) Requirement already satisfied: urllib3<3,>=1.21.1 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from requests->folium) (2.1.0) Requirement already satisfied: certifi>=2017.4.17 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from requests->folium) (2023.7.22) Note: you may need to restart the kernel to use updated packages.
[notice] A new release of pip is available: 23.2.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip
Requirement already satisfied: matplotlib in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (3.8.2) Requirement already satisfied: contourpy>=1.0.1 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (1.2.0) Requirement already satisfied: cycler>=0.10 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (0.12.1) Requirement already satisfied: fonttools>=4.22.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (4.46.0) Requirement already satisfied: kiwisolver>=1.3.1 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (1.4.5) Requirement already satisfied: numpy<2,>=1.21 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (1.26.2) Requirement already satisfied: packaging>=20.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (23.2) Requirement already satisfied: pillow>=8 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (10.1.0) Requirement already satisfied: pyparsing>=2.3.1 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (3.1.1) Requirement already satisfied: python-dateutil>=2.7 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from matplotlib) (2.8.2) Requirement already satisfied: six>=1.5 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0) Note: you may need to restart the kernel to use updated packages.
[notice] A new release of pip is available: 23.2.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip
Requirement already satisfied: numpy in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (1.26.2) Note: you may need to restart the kernel to use updated packages.
[notice] A new release of pip is available: 23.2.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip
Requirement already satisfied: geopy in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (2.4.1) Requirement already satisfied: geographiclib<3,>=1.52 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from geopy) (2.0) Note: you may need to restart the kernel to use updated packages.
[notice] A new release of pip is available: 23.2.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip
Requirement already satisfied: pykrige in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (1.7.2) Requirement already satisfied: numpy>=1.20.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from pykrige) (1.26.2) Requirement already satisfied: scipy<2,>=1.1.0 in c:\users\pc\appdata\local\programs\python\python311\lib\site-packages (from pykrige) (1.14.1) Note: you may need to restart the kernel to use updated packages.
[notice] A new release of pip is available: 23.2.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip
2. Tipos de Dados Geoespaciais ¶
Objetivo: Aprender a manipular arquivos geoespaciais (shapefiles, GeoJSON, raster) e transformá-los para análise.
2.1 Trabalhando com Dados Vetoriais¶
Os dados vetoriais são representações espaciais baseadas em pontos, linhas e polígonos. Esses dados são amplamente utilizados em aplicações geoespaciais para modelar características do mundo real, como limites políticos, rodovias, rios e infraestrutura urbana.
Um dos formatos mais comuns para armazenar dados vetoriais é o Shapefile (.shp), desenvolvido pela ESRI. Ele é composto por múltiplos arquivos auxiliares (como pode ser visto no diretorio datasets/Brasil_UF):
- .shp: Armazena a geometria dos objetos espaciais.
- .shx: Índice espacial das geometrias.
- .dbf: Tabela de atributos contendo informações descritivas sobre os objetos.
- .prj: Define o sistema de coordenadas do arquivo.
Neste notebook, vamos carregar um shapefile contendo os limites das unidades federativas do Brasil e explorar sua estrutura.
import geopandas as gpd
#Usando ShapeFile
BASE_DIR = "datasets"
shapefile_path = f"{BASE_DIR}/RJ_2023/RJ_Municipios_2023.shp" # Shapefile das Unidades da Federacao brasileira
gdf_shp = gpd.read_file(shapefile_path)
gdf_shp.head()
| CD_MUN | NM_MUN | CD_RGI | NM_RGI | CD_RGINT | NM_RGINT | CD_UF | NM_UF | CD_REGIAO | NM_REGIAO | CD_CONCURB | NM_CONCURB | AREA_KM2 | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 3300100 | Angra dos Reis | 330002 | Angra dos Reis | 3301 | Rio de Janeiro | 33 | Rio de Janeiro | 3 | Sudeste | 3300100 | Angra dos Reis | 813.420 | MULTIPOLYGON (((-44.51649 -23.03589, -44.51633... |
| 1 | 3300159 | Aperibé | 330012 | Santo Antônio de Pádua | 3304 | Campos dos Goytacazes | 33 | Rio de Janeiro | 3 | Sudeste | None | None | 94.542 | POLYGON ((-42.11437 -21.61204, -42.11394 -21.6... |
| 2 | 3300209 | Araruama | 330013 | Cabo Frio | 3305 | Macaé - Rio das Ostras - Cabo Frio | 33 | Rio de Janeiro | 3 | Sudeste | 3300209 | Araruama/RJ | 638.276 | POLYGON ((-42.28399 -22.93928, -42.28444 -22.9... |
| 3 | 3300225 | Areal | 330007 | Petrópolis | 3303 | Petrópolis | 33 | Rio de Janeiro | 3 | Sudeste | 3303906 | Petrópolis/RJ | 110.724 | POLYGON ((-43.09004 -22.23844, -43.09135 -22.2... |
| 4 | 3300233 | Armação dos Búzios | 330013 | Cabo Frio | 3305 | Macaé - Rio das Ostras - Cabo Frio | 33 | Rio de Janeiro | 3 | Sudeste | 3300704 | Cabo Frio/RJ | 70.977 | MULTIPOLYGON (((-41.88151 -22.74808, -41.88153... |
Outro formato bastante utilizado é o GeoJSON (.geojson), que é baseado em JSON e amplamente adotado devido à sua compatibilidade com aplicações web. A maior diferença entre esses dataframes e um dataframe comum é a coluna geometry, que contém objetos espaciais do tipo POLYGON ou MULTIPOLYGON que representam áreas geográficas com coordenadas de latitude e longitude.
#Usando GeoJson
geojson_path = f"{BASE_DIR}/br_states.json"
gdf = gpd.read_file(geojson_path)
gdf.head()
| id | FID_Export | SIGLA | Total | Homens | Mulheres | Urbana | Rural | TX_Alfab | FID_estado | Estado | FK_macro | PK_sigla | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | AC | 0 | AC | 557526 | 280983 | 276543 | 370267 | 187259 | 65.154545 | -1 | Acre | N | AC | MULTIPOLYGON (((-66.80619 -9.81446, -66.64485 ... |
| 1 | AL | 1 | AL | 2822621 | 1378942 | 1443679 | 1919739 | 902882 | 59.364356 | -1 | Alagoas | NE | AL | MULTIPOLYGON (((-35.15263 -8.91373, -35.15628 ... |
| 2 | AM | 2 | AM | 2812557 | 1414367 | 1398190 | 2107222 | 705335 | 72.250000 | -1 | Amazonas | N | AM | MULTIPOLYGON (((-67.3259 2.02976, -67.30001 1.... |
| 3 | AP | 3 | AP | 477032 | 239453 | 237579 | 424683 | 52349 | 83.650000 | -1 | Amapá | N | AP | MULTIPOLYGON (((-50.09389 0.70205, -50.15695 0... |
| 4 | BA | 4 | BA | 13070250 | 6462033 | 6608217 | 8772348 | 4297902 | 71.163373 | -1 | Bahia | NE | BA | MULTIPOLYGON (((-38.64899 -18.03612, -38.65822... |
gdf_shp.info() # Exibir informações gerais do GeoDataFrame
print("\n-----\n")
gdf_shp.crs # Verificar a projeção cartográfica
<class 'geopandas.geodataframe.GeoDataFrame'> RangeIndex: 92 entries, 0 to 91 Data columns (total 14 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 CD_MUN 92 non-null object 1 NM_MUN 92 non-null object 2 CD_RGI 92 non-null object 3 NM_RGI 92 non-null object 4 CD_RGINT 92 non-null object 5 NM_RGINT 92 non-null object 6 CD_UF 92 non-null object 7 NM_UF 92 non-null object 8 CD_REGIAO 92 non-null object 9 NM_REGIAO 92 non-null object 10 CD_CONCURB 49 non-null object 11 NM_CONCURB 49 non-null object 12 AREA_KM2 92 non-null float64 13 geometry 92 non-null geometry dtypes: float64(1), geometry(1), object(12) memory usage: 10.2+ KB -----
<Geographic 2D CRS: EPSG:4674> Name: SIRGAS 2000 Axis Info [ellipsoidal]: - Lat[north]: Geodetic latitude (degree) - Lon[east]: Geodetic longitude (degree) Area of Use: - name: Latin America - Central America and South America - onshore and offshore. Brazil - onshore and offshore. - bounds: (-122.19, -59.87, -25.28, 32.72) Datum: Sistema de Referencia Geocentrico para las AmericaS 2000 - Ellipsoid: GRS 1980 - Prime Meridian: Greenwich
Visualizacao de dados vetoriais
import folium
# Mapa centralizado no Brasil
mapa = folium.Map(location=[-22.9068, -43.1729], zoom_start=8)
# Adicionar os limites das unidades federativas
for _, row in gdf_shp.iterrows():
folium.GeoJson(
row["geometry"],
name=row["NM_MUN"],
tooltip=str(row["AREA_KM2"]) + " km²",
style_function=lambda x: {"color": "blue"},
).add_to(mapa)
mapa